package com.base;

/**
 * @author liuxiaoding
 * @data 2019/7/7
 * 字符串倒叙输出
 */
public class StringReverse {
    public static void main(String[] args) {
        String str="1234567890";
        System.out.println("方法一（缓冲区）:"+bufferReverse(str));
        System.out.println("方法二（字符char,倒叙循环）:"+charReverse(str));
        System.out.println("方法三（toCharArray,倒叙循环）:"+reverseCharArrayString(str));
        System.out.println("方法四（递归截取）:"+reverseSubString("",str));
    }

    public static String bufferReverse(String str){
        StringBuffer stringBuffer=new StringBuffer(str);
        return stringBuffer.reverse().toString();
    }

    public static String charReverse(String str){
        int len=str.length();
        String rstr="";
        for(int i=len-1;i>=0;i--){
            rstr=rstr+str.charAt(i);
        }
        return  rstr;

    }
    /*
     * string倒序输出
     * 利用String类的toCharArray()，再倒序输出数组的方法
     * 2018-5-18 13:05:00
     */
    private static String reverseCharArrayString(String str) {

        char[] chr = str.toCharArray();
        String rstr="";
        for (int i = chr.length-1 ; i >= 0; i--) {
            rstr=rstr+chr[i];
        }
        return rstr;
    }
    /*
     * string倒序输出
     * 利用String类提供的subString()方法，利用递归的办法输出倒序字符串。
     * 2018-5-18 13:16:00
     */
    private static String reverseSubString(String p,String str) {

        if (str.length() == 1)
            p=p+str;
        else {
            String subString1 = str.substring(0, str.length() - 1);
            String subString2 = str.substring(str.length() - 1);

            p=p+subString2;

            reverseSubString(p,subString1);
        }
        return p;

    }

}
